﻿using TaleWorlds.Localization;

namespace MarriageFertility.Texts
{
    public static class CommonText
    {
        public static string ModName => new TextObject("{=MF_ModName}Marriage and Fertility").ToString();
        public static string MarriageConfig => new TextObject("{=MF_MarriageConfig}Marriage Settings").ToString();
        public static string DefaultConfig => new TextObject("{=MF_DefaultConfig}Default Configuration").ToString();

        public static string ResetDefaultConfig =>
            new TextObject("{=MF_ResetDefaultConfig}Uncheck to reset to default configuration").ToString();

        public static string FixClanLeader => new TextObject("{=MF_FixClanLeader}Fix Clan Leader").ToString();

        public static string KnowEveryOne => new TextObject("{=MF_KnowEveryOne}Know Everyone").ToString();

        public static string MinimumMarriageAgeMale =>
            new TextObject("{=MF_MinimumMarriageAgeMale}Minimum Marriage Age for Males").ToString();

        public static string MinimumMarriageAgeFeMale =>
            new TextObject("{=MF_MinimumMarriageAgeFemale}Minimum Marriage Age for Females").ToString();

        public static string AllowSameGender =>
            new TextObject("{=MF_AllowSameGender}Allow Same-Sex Marriage").ToString();

        public static string AllowMoreSpouse =>
            new TextObject("{=MF_AllowMoreSpouse}Allow Multiple Spouses").ToString();

        public static string AllowRelatedMarriage =>
            new TextObject("{=MF_AllowRelatedMarriage}Allow Consanguineous Marriage").ToString();

        public static string JoinPlayerClan =>
            new TextObject("{=MF_JoinPlayerClan}Always join the player's clan").ToString();

        public static string NpcMarriageConfig => new TextObject("{=MF_NpcMarriageConfig}NPC Marriage").ToString();

        public static string BaseMarriageProbability =>
            new TextObject("{=MF_BaseMarriageProbability}Base Marriage Probability (%)").ToString();

        public static string OnlyPlayerMarryMore =>
            new TextObject("{=MF_OnlyPlayerMarryMore}Only the player can marry multiple spouses").ToString();

        public static string IgnoreKingdom =>
            new TextObject("{=MF_IgnoreKingdom}Ignore Different Kingdom Impact").ToString();

        public static string IgnoreClan => new TextObject("{=MF_IgnoreClan}Ignore Clan Relationship Impact").ToString();

        public static string PregnancyBaseConfig =>
            new TextObject("{=MF_PregnancyBaseConfig}Pregnancy Settings").ToString();

        public static string PregnancyProbabilityConfig =>
            new TextObject("{=MF_PregnancyProbabilityConfig}Pregnancy Probability").ToString();

        public static string MinAge => new TextObject("{=MF_MinAge}Minimum Fertile Age").ToString();
        public static string MaxAge => new TextObject("{=MF_MaxAge}Maximum Fertile Age").ToString();

        public static string PregnancyDurationInDays =>
            new TextObject("{=MF_PregnancyDurationInDays}Pregnancy Duration (Days)").ToString();

        public static string MaternalMortalityProbabilityInLabor =>
            new TextObject("{=MF_MaternalMortalityProbabilityInLabor}Maternal Mortality Probability in Labor (%)")
                .ToString();

        public static string StillbirthProbability =>
            new TextObject("{=MF_StillbirthProbability}Stillbirth Probability (%)").ToString();

        public static string DeliveringFemaleOffspringProbability =>
            new TextObject("{=MF_DeliveringFemaleOffspringProbability}Probability of Delivering Female Offspring (%)")
                .ToString();

        public static string DeliveringTwinsProbability =>
            new TextObject("{=MF_DeliveringTwinsProbability}Probability of Delivering Twins (%)").ToString();

        public static string ChildJoinMotherClan =>
            new TextObject("{=MF_ChildJoinMotherClan}Child joins mother's clan after birth").ToString();

        public static string MainHeroProbability =>
            new TextObject("{=MF_MainHeroProbability}Daily Pregnancy Probability for Player or Player's Spouse (%)")
                .ToString();

        public static string MainHeroClanProbability =>
            new TextObject("{=MF_MainHeroClanProbability}Daily Pregnancy Probability for Player's Clan Members (%)")
                .ToString();

        public static string OtherHeroProbability =>
            new TextObject("{=MF_OtherHeroProbability}Daily Pregnancy Probability for Other Heroes (%)").ToString();

        public static string PrionMarriageFertility =>
            new TextObject("{=MF_PrionMarriageFertility}Prisoner Pregnancy").ToString();

        public static string PrisonOnlyPlayerParty =>
            new TextObject("{=MF_PrisonOnlyPlayerParty}Only for Prisoners in Player's Party").ToString();

        public static string PrionPregnancyProbability =>
            new TextObject("{=MF_PrionPregnancyProbability}Daily Pregnancy Probability for Prisoners (%)").ToString();

        public static string PlayerMaxChildrenLimit =>
            new TextObject("{=MF_PlayerMaxChildrenLimit}Maximum Number of Children Player Clan").ToString();

        public static string LordMaxChildrenLimit =>
            new TextObject("{=MF_LordMaxChildrenLimit}Maximum Number of Children Lord Clan").ToString();

        public static string ChildBecomeHuman => new TextObject("{=MF_ChildBecomeHuman}Child Rapid Growth").ToString();

        public static string ChildBecomeHumanDetail =>
            new TextObject("{=MF_ChildBecomeHumanDetail}Additional Days of Growth for Child (Stops after 18)")
                .ToString();

        public static TextObject ClanName => new TextObject("{=MF_ClanName}{hero}'s Clan");
        public static string RelationCheat => new TextObject("{=MF_RelationCheat}Relationship Cheat").ToString();
        public static string DialogControl => new TextObject("{=MF_DialogControl}Dialog Control").ToString();

        public static string PrisonMarryDialog =>
            new TextObject("{=MF_PrisonMarryDialog}Prisoner Marriage Dialog").ToString();

        public static string SexPregnancyDialog =>
            new TextObject("{=MF_SexPregnancyDialog}Artificial Insemination Dialog").ToString();

        public static string SexFriendDialog =>
            new TextObject("{=MF_SexFriendDialog}Friends with Benefits Dialog").ToString();

        public static string RentWifeDialog => new TextObject("{=MF_RentWifeDialog}Rent Wife Dialog").ToString();

        public static string DuelSpouseDialog =>
            new TextObject("{=MF_DuelSpouseDialog}Duel to Win Spouse Dialog").ToString();

        public static string PoemDialog => new TextObject("{=MF_PoemDialog}Poem Dialog").ToString();

        public static string ModInfo =>
            new TextObject("{=MF_Info}Marriage and childbirth have been loaded, author: Jiang He").ToString();

        public static string Confirm => new TextObject("{=MF_Confirm}Confirm").ToString();
        public static string Cancel => new TextObject("{=MF_Cancel}Cancel").ToString();
        public static string HeroOldAge => new TextObject("{=MF_HeroOldAge}Hero's Old Age").ToString();
        public static string TournamentGroupName => new TextObject("{=MF_TournamentGroupName}Arena").ToString();

        public static string TournamentNameShowText =>
            new TextObject("{=MF_TournamentNameShowText}Show Hero Name").ToString();

        // New text properties for PartyLeaveRequestBehavior settings
        public static string PartyLeaveConfig =>
            new TextObject("{=MF_PartyLeaveConfig}Party Leave Settings").ToString();

        public static string DaysInTownThreshold =>
            new TextObject("{=MF_DaysInTownThreshold}Days in Town Before Leave Request (Days)").ToString();

        public static string RequestTimeoutDays =>
            new TextObject("{=MF_RequestTimeoutDays}Leave Request Timeout (Days)").ToString();

        public static string EliteTroopRatio =>
            new TextObject("{=MF_EliteTroopRatio}Elite Troop Ratio for New Party (%)").ToString();
        
        public static string EnableClearSpouse =>
            new TextObject("{=MF_EnableClearSpouse}All heroes start with no spouse or children").ToString();

        public static string LordAutoTrade =>
            new TextObject("{=MF_LordAutoTrade}NPCs Auto-Buy Equipment from Shop").ToString();
    }
}